﻿#include <string>
using std::string;
/*
1.2 字符串包含
		给定两个分别由字母组成的字符串A和字符串B，字符串B的长度比字符串A短。
	请问，如何最快地判断字符串B中所有字母是否都在字符串A里？
*/

// “最好的方法”，时间复杂度O(n + m)，空间复杂度O(1)
bool StringContain(string &a, string &b){
	int hash = 0;
	for (unsigned int i = 0; i < a.size(); ++i){
		hash |= (1 << a[i]);
	}
	for (unsigned int i = 0; i < b.size(); ++i){
		if ((hash&(1 << b[i])) == 0){
			return false;
		}
	}
	return true;
}

//个人猜想：应用于关键字搜索效果应该甚好